package com.集合.Map集合.案例;

/*案例：HashMap集合存储学生对象并遍历
需求：创建一个HashMap集合，键是学号(String)，值是学生对象(Student)。存储三个键值对元素，并遍历
思路：
①定义学生类
② 创建HashMap集合对象
③ 创建学生对象
④把学生添加到集合
⑤ 遍历集合
方式1：键找值
方式2：键值对对象找键和值*/
import java.util.HashMap;
import java.util.Map;
import java.util.Set;



public class HashMapDemo1 {

    public static void main(String[] args) {
        //创建HashMap集合对象
        HashMap<String,Student> hm = new HashMap<String,Student>();
        //创建学生对象
        Student s1 = new Student("张三",20);
        Student s2 = new Student("李四",21);
        Student s3 = new Student("汤姆",22);
        Student s4 = new Student("杰瑞",23);
        //把学生添加到集合
        hm.put("01",s1);
        hm.put("02",s2);
        hm.put("03",s3);
        hm.put("04",s4);
        //遍历集合
//        方式1：键找值
        Set<String> set1 = hm.keySet();
        for(String s:set1){
            Student value = hm.get(s);
            System.out.println("学生对象:"+s+","+value);
        }
        System.out.println();
//        方式2：键值对对象找键和值
        Set<Map.Entry<String,Student>> set2 = hm.entrySet();
        for(Map.Entry<String,Student> ss:set2){
            System.out.println("学生对象:"+ss.getKey()+","+ss.getValue());
        }

        /*重写toString()方法前:
        * 学生对象:01,com.集合.Map集合.案例.Student@5fd0d5ae
        * 重写toString()方法后:
        *学生对象:01,张三,20
        *
        *   也可以不重写toString()方法,value是学生对象,可以使用value.getName和
        * value.getAge*/
    }
}
